//
//  NSObject+performSelector.h
//  NSInvocation
//
//  Created by rsh on 2019/10/15.
//  Copyright © 2019年 rsh. All rights reserved.
//

#import <Foundation/Foundation.h>

// MARK: NSInvocation -- 用来包装方法和对应的对象，它可以存储方法的名称，对应的对象，对应的参数


/**
 在 iOS中可以直接调用某个对象的消息方式有两种：
 一种是 performSelector:withObject；
 再一种就是 NSInvocation。
 
 //===============================================//
 第一种方式比较简单，能完成简单的调用。但是对于 >2 个的参数或者有返回值的处理，那就需要做些额外工作才能搞定。那么在这种情况下，我们就可以使用NSInvocation来进行这些相对复杂的操作
 
 **/

@interface NSObject (performSelector)


- (id)performSelector:(SEL)aSelector withObjects:(NSArray*)objects;


@end



/**
 
 用法介绍：
 
 - (void)viewDidLoad {
     [super viewDidLoad];
 
     [self performSelector:@selector(call:with1:with2:with3:) withObjects:@[@"aaa",@"bbb",@"ccc",@"ddd"]];
 }


 -(void)call:(NSString*)str with1:(NSString *)str1 with2:(NSString *)str2 with3:(NSString *)str3{
     NSLog(@"%@---%@---%@----%@",str,str1,str2,str3);
     
 }

 
 
 **/
